home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / pbtool.exe / TOUCHIT.BAS < prev    next >
BASIC Source File  |  1992-04-03  |  4KB  |  148 lines

  1. '----------------------------------------------------------
  2. '  PROGRAM: TOUCHIT.BAS        PROGRAMMER: A. KELLETT
  3. '  DATE-WRITTEN: 04/03/92
  4. '  USING POWER BASIC V2.10A
  5. '
  6. '  THIS PROGRAM ALTERS THE TIME/DATE STAMP OF A FILE TO
  7. '  THE CURRENT SYSTEM TIME/DATE.  MUST BE COMPILED WITH
  8. '  POWERBASIC V2.10 OR GREATER
  9. '
  10. '  VERSION: 0.40    LAST UPDATED: 00/00/00
  11. '----------------------------------------------------------
  12. VERSION$ = "0.40"
  13. FILENAME1$ = COMMAND$
  14. MAINFLAG% = 0
  15. WHILE MAINFLAG% = 0
  16.    IF FILENAME1$ = "" THEN
  17.       CLS
  18.       LOCATE 1,12:PRINT USING_
  19.       "   TOUCHIT V \  \  - SET TIME/DATE STAMP TO CURRENT TIME/DATE";VERSION$
  20.       LOCATE 5,12:INPUT "FILE NAME: ";FILENAME1$
  21.       IF FILENAME1$ = "" THEN
  22.          LOCATE 20,1:PRINT "PROGRAM ENDING..."
  23.          END
  24.       END IF
  25.    END IF
  26.    GOSUB FILEEXISTS
  27.    GOSUB GETATTRIB
  28.  
  29.    LOCATE 15,1:PRINT "DO YOU WANT TO CHANGE THE TIME/DATE STAMP [Y/N]"
  30.    DO
  31.       KEYIN$ = UCASE$(INKEY$)
  32.    LOOP UNTIL INSTR(" YN", KEYIN$) > 1
  33.  
  34.    IF KEYIN$ = "Y" THEN
  35.       GOSUB UPDATEFILE
  36.    END IF
  37.  
  38.    LOCATE 18,12:PRINT "UPDATE ANOTHER FILE? [Y/N] <Enter> = No  ";
  39.    KEYIN$ = ""
  40.    DO
  41.       KEYIN$ = UCASE$(INKEY$)
  42.    LOOP UNTIL INSTR(" YN", KEYIN$) > 1
  43.    IF KEYIN$ <> "Y" THEN
  44.       MAINFLAG% = 1
  45.    ELSE
  46.       FILENAME1$ = ""
  47.    END IF
  48.  
  49. WEND
  50.  
  51. LOCATE 23,1:PRINT "THANKS FOR USING TOUCHIT  -  ANDY K!"
  52. END
  53. '
  54. ' SET UP ATTRIBUTE FLAGS FROM FILE ATTRIBUTES
  55. '----------------------------------------------------------
  56. GETATTRIB:
  57.    ATTRIBUTE% = ATTRIB(FILENAME1$)
  58.    X% = ATTRIBUTE%
  59.    IF ATTRIBUTE% => 32 THEN
  60.       ARCHIVE% = 1
  61.       ATTRIBUTE% = ATTRIBUTE% - 32
  62.    ELSE
  63.       ARCHIVE% = 0
  64.    END IF
  65.    IF ATTRIBUTE% => 16 THEN
  66.       SUBDIR% = 1
  67.       ATTRIBUTE% = ATTRIBUTE% - 16
  68.    END IF
  69.    IF ATTRIBUTE% => 8 THEN
  70.       VLABEL% = 1
  71.       ATTRIBUTE% = ATTRIBUTE% - 8
  72.    END IF
  73.    IF ATTRIBUTE% => 4 THEN
  74.       SYSTEMBIT% = 1
  75.       ATTRIBUTE% = ATTRIBUTE% - 4
  76.    ELSE
  77.       SYSTEMBIT% = 0
  78.    END IF
  79.    IF ATTRIBUTE% => 2 THEN
  80.       HIDDEN% = 1
  81.       ATTRIBUTE% = ATTRIBUTE% - 2
  82.    ELSE
  83.       HIDDEN% = 0
  84.    END IF
  85.    IF ATTRIBUTE% => 1 THEN
  86.       READONLY% = 1
  87.    ELSE
  88.       READONLY% = 0
  89.    END IF
  90.  
  91. RETURN
  92. '
  93. ' DOES FILE EXIST, IF NOT EXIT THE PROGRAM
  94. '----------------------------------------------------------
  95. FILEEXISTS:
  96.    '*** CHECK VALIDITY OF INPUT FILE NAME ***
  97.    OPEN FILENAME1$ FOR BINARY AS #1
  98.       IF LOF(1) < 1 THEN
  99.          LOCATE STARTROW% + 10, STARTCOLUMN% + 7
  100.          PRINT "THE FILE DOES NOT EXISTS, PROGRAM ABORTING.";
  101.          CLOSE #1
  102.          KILL FILENAME1$
  103.          DELAY 2.5
  104.          LOCATE 22,1
  105.          END
  106.       END IF
  107.       FILE1EOF&& = LOF(1)
  108.    CLOSE #1
  109.  
  110. RETURN
  111. '
  112. ' UPDATE TIME/DATE STAMP, SET ATTRIBUTE BACK TO ORIGINAL STATE
  113. '----------------------------------------------------------
  114. UPDATEFILE:
  115.    '** IF IT'S READ-ONLY, TEMPORARILY SET IT TO READ/WRITE ACCESS
  116.    IF READONLY% = 1 THEN
  117.       ATTRIBUTE% = ATTRIBUTE% - 1
  118.       ATTRIB FILENAME1$, ATTRIBUTE%
  119.    END IF
  120.    '** THE TRICK IS TO OPEN THE FILE, READ 1 BYTE, WRITE THAT BYTE BACK TO
  121.    '** THE SAME POSITION IN THE FILE, AND CLOSE.  DOS UPDATES THE TIME & DATE.
  122.    OPEN FILENAME1$ FOR BINARY AS #1
  123.       SEEK 1, 1              :REM** POSITION TO BYTE 1 OF FILE 1
  124.       GET$ 1, 1, BUFFER$     :REM** READ 1 BYTE INTO BUFFER$
  125.       SEEK 1, 1              :REM** POSITION TO BYTE 1 OF FILE 1 AGAIN
  126.       PUT$ 1, BUFFER$        :REM** WRITE 1 BYTE FROM BUFFER$
  127.    CLOSE #1
  128.  
  129.    '*** SET ATTRIBUTE BACK TO ORIGINAL ***
  130.    ATTRIBUTE% = 0
  131.    IF READONLY% = 1 THEN
  132.       ATTRIBUTE% = ATTRIBUTE% + 1
  133.    END IF
  134.    IF ARCHIVE% = 1 THEN
  135.       ATTRIBUTE% = ATTRIBUTE% + 32
  136.    END IF
  137.    IF SYSTEMBIT% = 1 THEN
  138.       ATTRIBUTE% = ATTRIBUTE% + 4
  139.    END IF
  140.    IF HIDDEN% = 1 THEN
  141.       ATTRIBUTE% = ATTRIBUTE% + 2
  142.    END IF
  143.    ATTRIB FILENAME1$,ATTRIBUTE%
  144.  
  145. RETURN
  146.  
  147.  
  148.